package org.example.my_netty;


import org.example.my_netty.boss.MyBossGroup;
import org.example.my_netty.myNettyHandlerChain.MyNettyHandler;
import org.example.my_netty.worker.MyWorkerGroup;

//我的netty服务器
public class MyNettyServer {

    //boss事件组
    private MyBossGroup bossGroup;
    //监听的端口号  默认是8080
    int port = 8080;

    public MyNettyServer port(int port) {
        this.port = port;
        return this;
    }

    public  MyNettyServer group(MyBossGroup bossGroup,  MyWorkerGroup workerGroup) {
        bossGroup.setWorkerGroup(workerGroup);

        this.bossGroup = bossGroup;
        return this;
    }

    //添加处理器  目前是worker的读处理器
    public MyNettyServer addHandler(MyNettyHandler myNettyHandler) {
        bossGroup.addWorkerHandler(myNettyHandler);
        return this;
    }




    public void start() {
        //可拓展点： 同步/异步（先不管）事件（线程）组 底层通道 (先不管)  channel操作(核心)
        //7.把处理过程搞成链  这个的本质其实是 对所有事件做了一个分类 比如读和写
        //8. 试着多个处理器 能否渐进的处理 传递消息
        //9.  TODO 监听器机制 要提供每一步的通知机制 给外部监听

        //一开始只有accept事件 给boss处理
        bossGroup.start(port);

        System.out.println("启动成功 主线程" + Thread.currentThread().getName());

    }



}
